Apex এবং Visualforce Integration (Apex and Visualforce Integration)

Computer Programming - এপেক্স (Apex)
283
283

Apex এবং Visualforce Integration হলো Salesforce প্ল্যাটফর্মে Apex ব্যাকএন্ড লজিক এবং Visualforce ফ্রন্টএন্ড ইন্টারফেসের সংযোগ স্থাপন করার একটি পদ্ধতি। Visualforce পেজ ব্যবহারকারীর ইন্টারফেস প্রদান করে, যেখানে Apex ক্লাস থেকে ডেটা প্রক্রিয়াকরণ এবং লজিক এক্সিকিউট করা যায়। এই ইন্টিগ্রেশনের মাধ্যমে উন্নত ইউজার ইন্টারফেস তৈরি করা এবং ব্যাকএন্ডে জটিল লজিক ব্যবহার করে ফ্রন্টএন্ডে ডেটা প্রদর্শন করা সম্ভব হয়।


Apex এবং Visualforce Integration এর মূল উপাদান

  1. Visualforce Page: Visualforce পেজ HTML, CSS, এবং Visualforce ট্যাগ ব্যবহার করে ফ্রন্টএন্ড ডিজাইন তৈরি করে।
  2. Controller Class: Apex Controller ক্লাস ব্যাকএন্ড লজিক ও ডেটা প্রক্রিয়াকরণ করে Visualforce পেজে প্রেরণ করে।
  3. Standard Controller: Salesforce-এর স্ট্যান্ডার্ড অবজেক্ট, যেমন Account, Contact, Opportunity ইত্যাদি ব্যবহারের জন্য স্ট্যান্ডার্ড কন্ট্রোলার ব্যবহার করা যায়।
  4. Custom Controller/Extension: কাস্টম লজিক ব্যবহার করতে Custom Controller বা Extension ব্যবহার করা হয়।

Apex এবং Visualforce Integration এর প্রকারভেদ

  1. Standard Controller Integration: Standard Controller ব্যবহার করে Salesforce-এর স্ট্যান্ডার্ড অবজেক্ট থেকে ডেটা পুনরুদ্ধার করা যায়।
  2. Custom Controller Integration: Custom Controller ব্যবহার করে ব্যাকএন্ডে কাস্টম লজিক ও ডেটা প্রক্রিয়াকরণ করা যায়।
  3. Controller Extension: Standard Controller-এর কার্যক্ষমতা বাড়াতে Controller Extension ব্যবহার করা যায়।

Standard Controller Integration

Standard Controller Visualforce পেজে স্ট্যান্ডার্ড অবজেক্টের জন্য ডিফল্ট কার্যক্ষমতা প্রদান করে। এটি প্রাথমিকভাবে recordId প্যারামিটার ব্যবহার করে কাজ করে এবং ব্যাকএন্ড লজিকের জন্য অতিরিক্ত Apex ক্লাসের প্রয়োজন হয় না।

উদাহরণ

<apex:page standardController="Account">
    <h1>Account Details</h1>
    <p>Account Name: {!Account.Name}</p>
    <p>Industry: {!Account.Industry}</p>
</apex:page>
  • standardController="Account": Standard Controller ব্যবহার করে Account অবজেক্টের ডেটা পুনরুদ্ধার করা হয়েছে।
  • {!Account.Name} এবং {!Account.Industry}: Account রেকর্ডের নাম ও Industry ফিল্ডে ডেটা প্রদর্শন করা হয়েছে।

Custom Controller Integration

Custom Controller একটি কাস্টম Apex ক্লাস ব্যবহার করে Visualforce পেজে ডেটা প্রসেসিং এবং প্রদর্শন করা যায়। Custom Controller ব্যবহার করে বিভিন্ন ডেটা ফিল্টারিং, প্রক্রিয়াকরণ এবং বিশেষ লজিক প্রয়োগ করা যায়।

উদাহরণ

Custom Controller (Apex Class)

public class AccountController {
    public Account acc { get; set; }

    public AccountController() {
        acc = [SELECT Id, Name, Industry FROM Account LIMIT 1];
    }

    public void updateIndustry() {
        acc.Industry = 'Technology';
        update acc;
    }
}

Visualforce Page

<apex:page controller="AccountController">
    <h1>Account Details</h1>
    <p>Account Name: {!acc.Name}</p>
    <p>Industry: {!acc.Industry}</p>

    <apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
  • controller="AccountController": Custom Controller ব্যবহার করে ব্যাকএন্ডে ডেটা প্রক্রিয়াকরণ করা হয়েছে।
  • updateIndustry Method: Update Industry বাটন ক্লিক করলে Industry ফিল্ড আপডেট হবে এবং Visualforce পেজে দেখা যাবে।

Controller Extension Integration

Controller Extension হলো Standard Controller-এর সাথে কাস্টম লজিক যুক্ত করার একটি পদ্ধতি। Controller Extension ব্যবহার করে Standard Controller-এর কার্যক্ষমতা বাড়ানো যায়।

উদাহরণ

Controller Extension (Apex Class)

public class AccountControllerExtension {
    private final Account acc;

    public AccountControllerExtension(ApexPages.StandardController controller) {
        this.acc = (Account)controller.getRecord();
    }

    public void updateIndustry() {
        acc.Industry = 'Healthcare';
        update acc;
    }
}

Visualforce Page

<apex:page standardController="Account" extensions="AccountControllerExtension">
    <h1>Account Details</h1>
    <p>Account Name: {!Account.Name}</p>
    <p>Industry: {!Account.Industry}</p>

    <apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
  • extensions="AccountControllerExtension": Controller Extension ব্যবহার করে Standard Controller-এর কার্যক্ষমতা বাড়ানো হয়েছে।
  • updateIndustry Method: Update Industry বাটন ক্লিক করলে Industry ফিল্ড আপডেট হবে এবং তা Visualforce পেজে রিফ্রেশ হবে।

Visualforce Component এবং Apex Controller ব্যবহার

Visualforce Component এবং Apex Controller ব্যবহার করে পুনর্ব্যবহারযোগ্য কম্পোনেন্ট তৈরি করা যায়, যা কোড রিইউজ এবং ইন্টিগ্রেশন সহজ করে।

Component Definition (AccountComponent)

<apex:component controller="AccountComponentController">
    <apex:attribute name="accountId" type="Id" description="Account Id"/>
    <apex:outputText value="Account Name: {!account.Name}"/>
    <apex:outputText value="Industry: {!account.Industry}"/>
</apex:component>

Component Controller (AccountComponentController)

public class AccountComponentController {
    public Account account { get; set; }

    public AccountComponentController() {
        account = [SELECT Id, Name, Industry FROM Account LIMIT 1];
    }
}

Apex এবং Visualforce Integration এর ভালো অনুশীলন

  1. Governor Limits মেনে চলুন: Visualforce পেজে বড় ডেটা প্রক্রিয়াকরণের জন্য SOQL ও DML অপারেশন সীমিত করুন।
  2. Bulk SOQL এবং DML ব্যবহার করুন: Apex ক্লাসে SOQL বা DML লজিক অপ্টিমাইজ করুন।
  3. Custom Controller ব্যবহার করুন: Custom Controller ব্যবহার করে আরও জটিল এবং কাস্টম লজিক প্রয়োগ করুন।
  4. Test Coverage নিশ্চিত করুন: Controller এবং Extension-এর জন্য Unit Test লিখুন, যাতে ৭৫% কোড কাভারেজ নিশ্চিত হয়।
  5. Responsive Design নিশ্চিত করুন: Visualforce পেজে HTML ও CSS ব্যবহার করে Responsive Design নিশ্চিত করুন।

সারসংক্ষেপ

Apex এবং Visualforce Integration Salesforce-এ Apex এর ব্যাকএন্ড লজিক এবং Visualforce এর ফ্রন্টএন্ড ইন্টারফেস সংযুক্ত করে কার্যক্ষম এবং ইন্টারেক্টিভ ইউজার ইন্টারফেস তৈরি করতে ব্যবহৃত হয়। Standard Controller, Custom Controller, এবং Controller Extension ব্যবহার করে বিভিন্ন লজিক্যাল কার্যক্রম সম্পন্ন করা যায়। Governor Limits মেনে কোড অপ্টিমাইজ করা, Test Coverage নিশ্চিত করা, এবং Responsive Design তৈরি করার মাধ্যমে একটি উন্নত ইউজার এক্সপেরিয়েন্স নিশ্চিত করা সম্ভব।

common.content_added_by

Visualforce পেজ এবং Apex Controller এর সম্পর্ক

207
207

Visualforce Page এবং Apex Controller Salesforce-এ একসাথে কাজ করে একটি কাস্টমাইজড এবং ইন্টারেক্টিভ ইউজার ইন্টারফেস (UI) তৈরি করতে সহায়তা করে। Visualforce Page হলো ফ্রন্ট-এন্ড বা ব্যবহারকারীর দৃষ্টিতে দৃশ্যমান অংশ, যেখানে Apex Controller হলো ব্যাক-এন্ড লজিক যা UI-তে ডেটা এবং কার্যক্রম পরিচালনা করে। Visualforce Page এবং Apex Controller একসাথে কাজ করে Salesforce অ্যাপ্লিকেশনকে আরও কার্যকর এবং ব্যবহারকারীর জন্য উপযোগী করে।


Visualforce Page এবং Apex Controller এর সম্পর্ক

Visualforce Page এবং Apex Controller এর মধ্যে সম্পর্ক হলো MVC (Model-View-Controller) আর্কিটেকচারের ভিত্তিতে তৈরি। Visualforce Page হল View, যা ব্যবহারকারীর জন্য UI তৈরি করে। Apex Controller হল Controller, যা ডেটা এবং ব্যবসায়িক লজিক পরিচালনা করে।

Visualforce Page (View)

  • UI তৈরিতে ব্যবহৃত: Visualforce Page Salesforce প্ল্যাটফর্মে HTML এবং CSS এর মতো সিনট্যাক্স ব্যবহার করে কাস্টমাইজড UI তৈরি করে।
  • Dynamic Content প্রদর্শন: Visualforce Page ব্যবহার করে অ্যাপ্লিকেশন ডেটা দেখানো এবং ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট করা যায়।
  • Apex Controller কল করে: Visualforce Page-এ Apex Controller এবং Controller Extensions ব্যবহার করা যায়, যা বিভিন্ন কার্যক্রম সম্পন্ন করতে Controller এর সাথে সংযুক্ত থাকে।

Apex Controller (Controller)

  • ব্যবসায়িক লজিক পরিচালনা করে: Apex Controller মূলত Visualforce Page-এ ডেটা এবং কার্যক্রম পরিচালনার জন্য ব্যবসায়িক লজিক পরিচালনা করে।
  • ডেটা নিয়ে কাজ করে: Apex Controller SOQL এবং DML অপারেশন ব্যবহার করে ডেটাবেস থেকে ডেটা আনতে এবং ডেটা আপডেট করতে পারে।
  • View-এর সাথে ইন্টারঅ্যাক্ট করে: Apex Controller Visualforce Page-এ প্রদর্শিত ডেটা ম্যানিপুলেট এবং পরিচালনা করে, যাতে UI ব্যবহারকারীর অনুরোধ অনুযায়ী পরিবর্তিত হয়।

Visualforce Page এবং Apex Controller এর উদাহরণ

নিচে একটি সাধারণ উদাহরণ দেয়া হলো যেখানে Visualforce Page এবং Apex Controller একসাথে কাজ করেছে। এই উদাহরণে একটি Account রেকর্ডের তথ্য UI-তে প্রদর্শন এবং আপডেট করা হয়েছে।

Apex Controller

public class AccountController {
    public Account account { get; set; }

    public AccountController() {
        // ডেটা ইনিশিয়ালাইজেশন
        account = [SELECT Id, Name, Industry FROM Account LIMIT 1];
    }

    // Account নাম আপডেট করা মেথড
    public void updateAccountName() {
        update account;
    }
}
  • AccountController ক্লাস: Account অবজেক্টের ডেটা পরিচালনা করে এবং Visualforce Page-এ ডেটা পাঠায়।
  • updateAccountName() মেথড: এই মেথড Account রেকর্ডের নাম আপডেট করে।

Visualforce Page

<apex:page controller="AccountController">
    <h1>Account Details</h1>
    <apex:form>
        <apex:pageBlock title="Update Account Information">
            <apex:pageBlockSection>
                <apex:outputLabel value="Account Name"/>
                <apex:inputField value="{!account.Name}"/>

                <apex:outputLabel value="Industry"/>
                <apex:inputField value="{!account.Industry}"/>
            </apex:pageBlockSection>
            <apex:commandButton value="Update" action="{!updateAccountName}" rerender=""/>
        </apex:pageBlock>
    </apex:form>
</apex:page>
  • controller="AccountController": Visualforce Page-এর সাথে AccountController Controller সংযুক্ত করা হয়েছে।
  • {!account.Name} এবং {!account.Industry}: Account রেকর্ডের ফিল্ডগুলোকে UI-তে ইনপুট ফিল্ডের মাধ্যমে প্রদর্শন ও সম্পাদনা করা হয়েছে।
  • action="{!updateAccountName}": Update বোতামটি updateAccountName মেথড কল করে Account রেকর্ডের তথ্য আপডেট করে।

Visualforce Page এবং Apex Controller এর গুরুত্বপূর্ণ পয়েন্ট

Data Binding: Visualforce Page-এর {!variable} ব্যবহার করে Controller-এর ডেটা UI-তে ডায়নামিকভাবে দেখানো যায় এবং UI থেকে ডেটা Controller-এ পাঠানো যায়।

Action Methods: Controller এর মধ্যে বিভিন্ন মেথড যেমন update, save, delete তৈরি করা যায়, যা Visualforce Page-এর মাধ্যমে ব্যবহারকারীর কার্যক্রমে প্রতিক্রিয়া জানায়।

SOQL এবং DML Integration: Controller এর মাধ্যমে SOQL Query এবং DML Operation ব্যবহার করে Visualforce Page-এ ডেটা দেখানো এবং পরিবর্তন করা যায়।

Custom Validation Logic: Controller-এ কাস্টম ভ্যালিডেশন লজিক যুক্ত করে Visualforce Page-এর মাধ্যমে ডেটা ভ্যালিডেশন করা যায়।


Visualforce Page এবং Apex Controller ব্যবহার কেন গুরুত্বপূর্ণ

ডাইনামিক এবং ইন্টারেক্টিভ UI তৈরি: Visualforce Page এবং Apex Controller ব্যবহার করে ব্যবহারকারীর জন্য ডাইনামিক এবং ইন্টারেক্টিভ UI তৈরি করা যায়।

ব্যবসায়িক লজিক এবং ডেটা ম্যানেজমেন্ট: Controller ডেটা ম্যানেজমেন্ট এবং ব্যবসায়িক লজিক পরিচালনা করে, যা অ্যাপ্লিকেশনের কার্যক্ষমতা উন্নত করে।

কোড পুনঃব্যবহারযোগ্যতা: একবার তৈরি করা Apex Controller অন্যান্য Visualforce Page-এ ব্যবহার করা যায়, যা কোড পুনঃব্যবহারযোগ্যতা নিশ্চিত করে।

MVC আর্কিটেকচার অনুসরণ: Visualforce Page এবং Apex Controller, MVC আর্কিটেকচারের ভিত্তিতে গড়ে ওঠে, যা অ্যাপ্লিকেশন পরিচালনা ও নিয়ন্ত্রণকে সহজ ও কার্যকর করে।


ভালো অনুশীলন

Action Methods সঠিকভাবে ব্যবহার করুন: শুধুমাত্র প্রয়োজনীয় ফাংশন তৈরি করুন এবং Visualforce Page থেকে Controller-এর Action মেথড কল করুন।

Governor Limits মেনে চলুন: SOQL এবং DML Operations Controller-এ ব্যবহার করার সময় Salesforce-এর গভর্নর লিমিট মেনে চলুন।

Exception Handling: Controller-এ Exception Handling যুক্ত করে নিশ্চিত করুন যাতে কোনো ত্রুটি ঘটলে তা ব্যবহারকারীর কাছে উপযুক্ত বার্তা প্রদান করতে পারে।

Test Coverage: Controller-এ যুক্ত লজিক ও কার্যক্রমের জন্য যথাযথ Unit Test তৈরি করুন এবং ৭৫% কভারেজ নিশ্চিত করুন।


সারসংক্ষেপ

Visualforce Page এবং Apex Controller একসাথে কাজ করে Salesforce-এ ইন্টারেক্টিভ UI এবং ডেটা ম্যানেজমেন্ট নিশ্চিত করে। Visualforce Page UI-এর মাধ্যমে ব্যবহারকারীর জন্য কাস্টমাইজড ইন্টারফেস তৈরি করে, যেখানে Apex Controller ডেটা এবং ব্যবসায়িক লজিক পরিচালনা করে। MVC আর্কিটেকচার অনুসরণ করে Visualforce Page এবং Apex Controller অ্যাপ্লিকেশনের কার্যক্ষমতা, স্থায়িত্ব এবং পুনঃব্যবহারযোগ্যতা নিশ্চিত করে, যা উন্নত ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।

common.content_added_by

Custom Controller এবং Controller Extensions

324
324

Custom Controller এবং Controller Extension Salesforce-এ Visualforce পেজের সাথে Apex ক্লাসের মাধ্যমে কাস্টম লজিক এবং ডেটা প্রসেসিং সংযুক্ত করার দুটি পদ্ধতি। Custom Controller ব্যবহার করে সম্পূর্ণ নতুন Controller তৈরি করা হয়, যেখানে Controller Extension-এর মাধ্যমে একটি স্ট্যান্ডার্ড বা Custom Controller-এ নতুন কার্যক্ষমতা যোগ করা যায়। এই দুটি পদ্ধতির মাধ্যমে Apex কোডের জটিল লজিক Visualforce পেজে প্রয়োগ করা সহজ হয়।


Custom Controller

Custom Controller হলো এমন একটি Apex ক্লাস, যা Visualforce পেজের জন্য কাস্টম লজিক প্রদান করে। Custom Controller সাধারণত যখন স্ট্যান্ডার্ড অবজেক্টের উপর নির্ভরশীল নয়, বরং এককভাবে কাস্টম লজিক প্রয়োগ করতে হয়, তখন ব্যবহার করা হয়।

Custom Controller-এর বৈশিষ্ট্য

  1. সম্পূর্ণ কাস্টম লজিক: Visualforce পেজের জন্য সম্পূর্ণ নতুন ও স্বাধীন লজিক প্রদান করে।
  2. প্রচুর নিয়ন্ত্রণ: Custom Controller ব্যবহার করে বিভিন্ন ডেটা প্রসেসিং এবং কাস্টম ফাংশন সংযুক্ত করা যায়।
  3. Independent Functionality: এটি নির্দিষ্ট স্ট্যান্ডার্ড অবজেক্টের উপর নির্ভরশীল নয়।

Custom Controller উদাহরণ

Apex Class (Custom Controller)

public class AccountController {
    public Account acc { get; set; }

    public AccountController() {
        acc = [SELECT Id, Name, Industry FROM Account LIMIT 1];
    }

    public void updateIndustry() {
        acc.Industry = 'Technology';
        update acc;
    }
}

Visualforce Page

<apex:page controller="AccountController">
    <h1>Account Details</h1>
    <p>Account Name: {!acc.Name}</p>
    <p>Industry: {!acc.Industry}</p>

    <apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
  • controller="AccountController": Custom Controller হিসেবে AccountController Apex ক্লাস ব্যবহৃত হয়েছে।
  • updateIndustry Method: Update Industry বাটন ক্লিক করলে Industry ফিল্ড Technology হিসেবে আপডেট হবে এবং Visualforce পেজে তা দেখাবে।

Controller Extension

Controller Extension হলো একটি Apex ক্লাস, যা একটি স্ট্যান্ডার্ড বা Custom Controller-এর সাথে যুক্ত করা হয় এবং অতিরিক্ত কার্যক্ষমতা প্রদান করে। এটি মূল Controller-এর কার্যক্ষমতা পরিবর্তন না করে নতুন লজিক যোগ করার জন্য ব্যবহৃত হয়।

Controller Extension-এর বৈশিষ্ট্য

  1. স্ট্যান্ডার্ড ও কাস্টম কন্ট্রোলার এক্সটেনশন: স্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের কার্যক্ষমতা বাড়ানোর জন্য ব্যবহার করা যায়।
  2. সহজ ইন্টিগ্রেশন: Controller Extension-এর মাধ্যমে মূল Controller-এর ফিচার এবং ফাংশন ব্যবহার করা যায়।
  3. ডেটা প্রসেসিং ও ফিল্টারিং: Custom লজিক যোগ করে ডেটা প্রসেসিং ও ফিল্টারিং সহজ হয়।

Controller Extension উদাহরণ

Apex Class (Controller Extension)

public class AccountControllerExtension {
    private final Account acc;

    public AccountControllerExtension(ApexPages.StandardController controller) {
        this.acc = (Account)controller.getRecord();
    }

    public void updateIndustry() {
        acc.Industry = 'Healthcare';
        update acc;
    }
}

Visualforce Page

<apex:page standardController="Account" extensions="AccountControllerExtension">
    <h1>Account Details</h1>
    <p>Account Name: {!Account.Name}</p>
    <p>Industry: {!Account.Industry}</p>

    <apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
  • extensions="AccountControllerExtension": Controller Extension হিসেবে AccountControllerExtension Apex ক্লাস যুক্ত করা হয়েছে।
  • updateIndustry Method: Update Industry বাটন ক্লিক করলে Industry ফিল্ড Healthcare হিসেবে আপডেট হবে।

Custom Controller এবং Controller Extension এর মধ্যে পার্থক্য

বৈশিষ্ট্যCustom ControllerController Extension
প্রধান উদ্দেশ্যসম্পূর্ণ নতুন Controller তৈরি করাবিদ্যমান Controller-এর কার্যক্ষমতা বৃদ্ধি
স্ট্যান্ডার্ড কন্ট্রোলারব্যবহৃত হয় নাস্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের সাথে যুক্ত
ডেটা প্রসেসিংসম্পূর্ণ নতুন ডেটা প্রসেসিং যুক্ত করা হয়মূল Controller-এর ডেটা প্রসেসিং বাড়ানো
লজিক সংযোজনস্বতন্ত্র কাস্টম লজিকস্ট্যান্ডার্ড বা কাস্টম লজিকের উপর ভিত্তি করে
ব্যবহার ক্ষেত্রস্বাধীনভাবে কাজ করতে ব্যবহৃতস্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের ফিচার বৃদ্ধি

Custom Controller এবং Controller Extension এর ভালো অনুশীলন

  1. Governor Limits মেনে চলুন: কন্ট্রোলারে বড় ডেটা প্রক্রিয়াকরণ এড়িয়ে চলুন এবং SOQL/DML অপ্টিমাইজ করুন।
  2. SOQL এবং DML অপারেশন সীমাবদ্ধ করুন: Controller ক্লাসে বেশি SOQL বা DML অপারেশন এড়িয়ে চলুন।
  3. Test Coverage নিশ্চিত করুন: Custom Controller এবং Controller Extension-এর জন্য যথাযথ টেস্ট ক্লাস লিখে Test Coverage নিশ্চিত করুন।
  4. Reusable Methods তৈরি করুন: Reusable মেথড তৈরি করুন, যাতে কোড পুনরায় ব্যবহার করা যায় এবং কোডিং সহজ হয়।
  5. Exception Handling যুক্ত করুন: Exception Handling নিশ্চিত করতে try-catch ব্লক ব্যবহার করুন।

Custom Controller এবং Controller Extension উদাহরণ: টেস্ট ক্লাস সহ

Apex Class: Custom Controller

public class AccountController {
    public Account acc { get; set; }

    public AccountController() {
        acc = [SELECT Id, Name, Industry FROM Account LIMIT 1];
    }

    public void updateIndustry() {
        acc.Industry = 'Technology';
        update acc;
    }
}

Apex Class: Controller Extension

public class AccountControllerExtension {
    private final Account acc;

    public AccountControllerExtension(ApexPages.StandardController controller) {
        this.acc = (Account)controller.getRecord();
    }

    public void updateIndustry() {
        acc.Industry = 'Healthcare';
        update acc;
    }
}

Test Class: Custom Controller and Extension

@isTest
public class AccountControllerTest {
    @isTest
    static void testCustomController() {
        Account acc = new Account(Name = 'Test Account');
        insert acc;

        AccountController controller = new AccountController();
        controller.updateIndustry();

        Account updatedAcc = [SELECT Industry FROM Account WHERE Id = :acc.Id];
        System.assertEquals('Technology', updatedAcc.Industry);
    }

    @isTest
    static void testControllerExtension() {
        Account acc = new Account(Name = 'Test Account');
        insert acc;

        ApexPages.StandardController stdController = new ApexPages.StandardController(acc);
        AccountControllerExtension extension = new AccountControllerExtension(stdController);
        extension.updateIndustry();

        Account updatedAcc = [SELECT Industry FROM Account WHERE Id = :acc.Id];
        System.assertEquals('Healthcare', updatedAcc.Industry);
    }
}
  • testCustomController(): Custom Controller-এর জন্য টেস্ট ক্লাস তৈরি করা হয়েছে, যেখানে updateIndustry() মেথড সঠিকভাবে কাজ করছে কি না যাচাই করা হয়েছে।
  • testControllerExtension(): Controller Extension-এর জন্য টেস্ট ক্লাস তৈরি করা হয়েছে, যা Standard Controller-এর কার্যক্ষমতা বৃদ্ধি করে।

সারসংক্ষেপ

Custom Controller এবং Controller Extension Visualforce পেজের জন্য Apex লজিক সংযুক্ত করার দুটি পদ্ধতি। Custom Controller সম্পূর্ণ নতুন লজিক প্রদান করে, যেখানে Controller Extension মূল Controller-এর কার্যক্ষমতা বাড়ায়। টেস্ট ক্লাস ও সঠিক অপ্টিমাইজেশন নিশ্চিত করে এই দুটি পদ্ধতির মাধ্যমে Salesforce-এ কার্যকরী ও উন্নত ইউজার ইন্টারফেস তৈরি করা যায়।

common.content_added_by

Visualforce Components এবং Apex Integration

258
258

Visualforce Components এবং Apex Integration Salesforce-এ Visualforce Page এবং Apex Controller-এর মাধ্যমে ইন্টারঅ্যাক্টিভ এবং কার্যক্ষম ব্যবহারকারীর ইন্টারফেস (UI) তৈরি করতে সহায়ক। Visualforce Components Visualforce Page-এ ব্যবহৃত পুনঃব্যবহারযোগ্য এলিমেন্ট, যেখানে Apex Integration বিভিন্ন অ্যাপ্লিকেশন বা পরিষেবার মধ্যে সংযোগ স্থাপন করে ডেটা আদান-প্রদান করতে সহায়তা করে।


Visualforce Components

Visualforce Components হলো Visualforce Page-এ ব্যবহৃত ছোট ছোট, পুনঃব্যবহারযোগ্য UI এলিমেন্ট, যা Visualforce Markup ব্যবহার করে তৈরি করা হয়। এগুলো HTML এবং CSS এর সাথে একত্রে ব্যবহার করা যায় এবং Salesforce-এর মধ্যে বিভিন্ন কার্যক্রমে ব্যবহৃত হয়। Visualforce Components ব্যবহার করে একটি কাস্টম এবং ডাইনামিক UI তৈরি করা সহজ হয়।

Visualforce Components-এর প্রকারভেদ

  1. Standard Components: Salesforce প্রদত্ত পূর্বনির্ধারিত কম্পোনেন্ট, যেমন <apex:form>, <apex:commandButton>, <apex:inputField>, ইত্যাদি।
  2. Custom Components: ডেভেলপার কর্তৃক তৈরি কম্পোনেন্ট, যা স্পেসিফিক ফাংশনালিটি সম্পন্ন এবং পুনঃব্যবহারযোগ্য।

কিছু সাধারণ Visualforce Components

  1. apex:page: পুরো Visualforce Page কে ঘিরে রাখে।
  2. apex:form: ফর্ম তৈরি করতে ব্যবহৃত হয়, যা ব্যবহারকারীর ইনপুট গ্রহণ করে।
  3. apex:commandButton: একটি বাটন তৈরি করে, যা ক্লিক করার সাথে নির্দিষ্ট অ্যাকশন সম্পন্ন করে।
  4. apex:pageBlock: একটি ব্লক তৈরি করে, যেখানে ফর্ম বা তথ্য প্রদর্শন করা হয়।
  5. apex:repeat: তালিকা বা ডেটাসেটের প্রতিটি রেকর্ড লুপের মাধ্যমে দেখানোর জন্য ব্যবহৃত হয়।

Visualforce Components এর উদাহরণ

নিচে Visualforce Components ব্যবহার করে একটি সাধারণ ফর্ম তৈরি করা হয়েছে, যা ব্যবহারকারীর ইনপুট গ্রহণ করে এবং saveAccount মেথড কল করে।

<apex:page controller="AccountController">
    <apex:form>
        <apex:pageBlock title="Account Information">
            <apex:pageBlockSection>
                <apex:outputLabel value="Account Name"/>
                <apex:inputField value="{!account.Name}"/>

                <apex:outputLabel value="Industry"/>
                <apex:inputField value="{!account.Industry}"/>
            </apex:pageBlockSection>
            <apex:commandButton value="Save" action="{!saveAccount}" rerender=""/>
        </apex:pageBlock>
    </apex:form>
</apex:page>
  • apex:form: ফর্মের জন্য ব্যবহার করা হয়েছে।
  • apex:inputField: ইনপুট ফিল্ড, যা ব্যবহারকারীর ইনপুট গ্রহণ করে।
  • apex:commandButton: Save বাটন, যা ক্লিক করলে saveAccount মেথড কল করে।

Apex Integration

Apex Integration Salesforce প্ল্যাটফর্মে বিভিন্ন এক্সটার্নাল সার্ভার বা অ্যাপ্লিকেশনের সাথে সংযোগ স্থাপন করতে সহায়ক। Salesforce-এর Apex Integration সাধারণত REST API, SOAP API, HTTP Callouts ইত্যাদি মাধ্যমে সম্পন্ন হয়, যা Salesforce এবং অন্যান্য সিস্টেমের মধ্যে ডেটা আদান-প্রদানে সহায়ক।

Apex Integration-এর প্রকারভেদ

  1. Inbound Integration: Salesforce API ব্যবহার করে বাহ্যিক সিস্টেম থেকে ডেটা গ্রহণ বা Salesforce অ্যাপ্লিকেশনের মধ্যে সংযুক্ত করা।
  2. Outbound Integration: Apex HTTP Callouts ব্যবহার করে Salesforce থেকে বাহ্যিক সার্ভারে ডেটা প্রেরণ করা বা রেসপন্স সংগ্রহ করা।

Apex Integration এর কিছু গুরুত্বপূর্ণ টুল

  1. REST API: REST API ব্যবহার করে Salesforce-এর রিসোর্স বা ডেটা বাহ্যিক সিস্টেমে প্রেরণ ও গ্রহণ করা হয়।
  2. SOAP API: SOAP API ব্যবহার করে XML ফরম্যাটে Salesforce এবং অন্যান্য সিস্টেমের মধ্যে ডেটা আদান-প্রদান করা হয়।
  3. HTTP Callouts: HTTP GET, POST, PUT, এবং DELETE কল ব্যবহার করে এক্সটার্নাল সার্ভারে ডেটা পাঠানো বা রেসপন্স গ্রহণ করা।

Apex Integration উদাহরণ (HTTP Callout)

নিচের উদাহরণে, Apex ক্লাসে একটি HTTP GET কল আউট করা হয়েছে, যা বাহ্যিক সার্ভার থেকে ডেটা সংগ্রহ করে এবং JSON রেসপন্স পায়।

public class IntegrationExample {
    public void getDataFromExternalService() {
        Http http = new Http();
        HttpRequest request = new HttpRequest();
        request.setEndpoint('https://api.example.com/data');
        request.setMethod('GET');
        
        HttpResponse response = http.send(request);
        
        if (response.getStatusCode() == 200) {
            String jsonResponse = response.getBody();
            System.debug('Response: ' + jsonResponse);
        } else {
            System.debug('Error: ' + response.getStatusCode());
        }
    }
}
  • setEndpoint: এক্সটার্নাল সার্ভারের URL সেট করে।
  • setMethod: HTTP মেথড GET নির্ধারণ করে।
  • response.getBody(): রেসপন্স থেকে JSON ডেটা সংগ্রহ করে।

Visualforce Components এবং Apex Integration এর সম্পর্ক

Visualforce Components এবং Apex Integration একত্রে কাজ করে Salesforce অ্যাপ্লিকেশনে একটি সমন্বিত ও কার্যক্ষম ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।

  1. ডেটা প্রদর্শন ও আপডেট: Visualforce Components ব্যবহার করে এক্সটার্নাল ডেটা প্রদর্শন ও আপডেট করা যায়।
  2. ব্যবহারকারী এবং বাহ্যিক সিস্টেমের মধ্যে সংযোগ: Apex Integration এবং Visualforce Components এর মাধ্যমে ব্যবহারকারী Salesforce প্ল্যাটফর্ম থেকে সরাসরি এক্সটার্নাল সিস্টেমে ডেটা পাঠাতে বা গ্রহণ করতে পারে।
  3. ইন্টারেক্টিভ UI এবং বাহ্যিক API: Visualforce Page-এ ব্যবহারকারীর জন্য ইন্টারেক্টিভ UI তৈরি করে, যেখানে Apex Integration ব্যবহার করে বাহ্যিক API কল বা ডেটা রিসোর্স সংগ্রহ করা যায়।

ভালো অনুশীলন

  1. Exception Handling: Integration বা Callouts এ Exception Handling যুক্ত করুন, যাতে ত্রুটি ঘটলে সঠিক বার্তা প্রদান করা যায়।
  2. Governor Limits মেনে চলুন: Apex Integration এবং Visualforce Components ব্যবহার করার সময় Salesforce-এর গভর্নর লিমিট মেনে চলুন।
  3. Test Coverage নিশ্চিত করুন: Integration এবং Components-এর জন্য যথাযথ Unit Test তৈরি করে ৭৫% কোড কভারেজ নিশ্চিত করুন।
  4. Sensitive Data Encrypt করুন: এক্সটার্নাল API কলের সময় সেনসিটিভ ডেটা এড়িয়ে চলুন বা সুরক্ষিত উপায়ে সংরক্ষণ করুন।

সারসংক্ষেপ

  • Visualforce Components Salesforce-এ UI তৈরি এবং ব্যবহারে সহায়ক, যেখানে Apex Integration বিভিন্ন এক্সটার্নাল সার্ভারের সাথে সংযোগ স্থাপন করে ডেটা আদান-প্রদান নিশ্চিত করে।
  • Apex Integration Salesforce-এর REST API, SOAP API, বা HTTP Callouts ব্যবহার করে বাহ্যিক সিস্টেমের সাথে সংযুক্ত হয় এবং ডেটা রিসোর্স পরিচালনা করে।

Visualforce Components এবং Apex Integration ব্যবহার করে Salesforce-এ একটি শক্তিশালী, ইন্টারেক্টিভ এবং কার্যক্ষম অ্যাপ্লিকেশন তৈরি করা যায়, যা ব্যবহারকারীর জন্য উন্নত অভিজ্ঞতা প্রদান করে।

common.content_added_by

Visualforce পেজে SOQL এবং DML ব্যবহার

203
203

Visualforce পেজে SOQL এবং DML ব্যবহার হলো Apex ক্লাসের মাধ্যমে Salesforce ডেটাবেস থেকে ডেটা পুনরুদ্ধার এবং পরিবর্তন করার পদ্ধতি। Visualforce পেজে SOQL এবং DML ব্যবহার করা হয় Apex ক্লাসের মধ্যে, যা ডেটা ফিল্টারিং, ফিল্ড আপডেট, নতুন রেকর্ড তৈরি, অথবা রেকর্ড মুছে ফেলার জন্য সহায়ক। তবে এটি করতে গিয়ে গভর্নর লিমিট মেনে চলা গুরুত্বপূর্ণ, যাতে কোডের কার্যকারিতা ও স্থায়িত্ব বজায় থাকে।


SOQL এবং DML কীভাবে Visualforce পেজে ব্যবহার করবেন

Visualforce পেজে SOQL এবং DML সরাসরি ব্যবহার করা হয় না; বরং একটি Custom Controller বা Controller Extension-এর মাধ্যমে SOQL এবং DML অপারেশন করা হয়। SOQL ব্যবহার করে ডেটাবেস থেকে ডেটা ফিল্টার করা হয়, এবং DML অপারেশন ব্যবহার করে সেই ডেটায় পরিবর্তন আনা হয়।


SOQL ব্যবহার করে Visualforce পেজে ডেটা প্রদর্শন

SOQL ব্যবহার করে ডেটাবেস থেকে ডেটা পুনরুদ্ধার করা যায় এবং Visualforce পেজে তা প্রদর্শন করা হয়। SOQL ব্যবহার করে সাধারণত কাস্টম লজিকের মাধ্যমে ডেটা ফিল্টার করা হয়।

উদাহরণ: Visualforce পেজে SOQL ব্যবহার

Apex Class (Custom Controller)

public class AccountController {
    public List<Account> accountList { get; set; }

    public AccountController() {
        accountList = [SELECT Id, Name, Industry FROM Account LIMIT 10];
    }
}

Visualforce Page

<apex:page controller="AccountController">
    <h1>Account List</h1>
    <apex:pageBlock title="Accounts">
        <apex:pageBlockTable value="{!accountList}" var="acc">
            <apex:column value="{!acc.Name}" headerValue="Account Name"/>
            <apex:column value="{!acc.Industry}" headerValue="Industry"/>
        </apex:pageBlockTable>
    </apex:pageBlock>
</apex:page>
  • SOQL Query in Constructor: Custom Controller-এ accountList ফিল্ডে SOQL ব্যবহার করে Account রেকর্ডগুলো পুনরুদ্ধার করা হয়েছে।
  • Data Display on Visualforce Page: Visualforce পেজে Account নাম এবং Industry প্রদর্শনের জন্য apex:pageBlockTable ব্যবহার করা হয়েছে।

DML ব্যবহার করে Visualforce পেজে ডেটা আপডেট

DML অপারেশন ব্যবহার করে Visualforce পেজে ডেটা আপডেট, নতুন রেকর্ড তৈরি বা মুছে ফেলা যায়। সাধারণত commandButton বা commandLink এর মাধ্যমে DML অপারেশন ট্রিগার করা হয়।

উদাহরণ: Visualforce পেজে DML ব্যবহার

Apex Class (Custom Controller)

public class AccountController {
    public Account acc { get; set; }

    public AccountController() {
        acc = new Account();
    }

    public void saveAccount() {
        insert acc;
    }
}

Visualforce Page

<apex:page controller="AccountController">
    <h1>Create New Account</h1>
    <apex:form>
        <apex:inputField value="{!acc.Name}" label="Account Name"/>
        <apex:inputField value="{!acc.Industry}" label="Industry"/>

        <apex:commandButton value="Save Account" action="{!saveAccount}" rerender="confirmationMessage"/>
        <apex:outputPanel id="confirmationMessage">
            <apex:outputText value="Account has been saved successfully!" rendered="{!NOT(ISNULL(acc.Id))}"/>
        </apex:outputPanel>
    </apex:form>
</apex:page>
  • DML Operation (Insert): Custom Controller-এ saveAccount মেথড ব্যবহার করে DML insert অপারেশন করা হয়েছে, যা নতুন Account রেকর্ড তৈরি করে।
  • CommandButton for Save: Visualforce পেজে commandButton ব্যবহার করে saveAccount মেথড কল করা হয়েছে, যা রেকর্ড সেভ করবে এবং সফল হলে একটি কনফার্মেশন মেসেজ প্রদর্শন করবে।

SOQL এবং DML এর ভালো অনুশীলন

  1. Governor Limits মেনে চলুন: SOQL এবং DML অপারেশন সীমিত করুন এবং Loop এর ভিতরে SOQL বা DML এড়িয়ে চলুন।
  2. Bulk SOQL এবং DML ব্যবহার করুন: একাধিক রেকর্ড নিয়ে কাজ করার সময় Bulk SOQL এবং DML ব্যবহার করুন।
  3. Exception Handling নিশ্চিত করুন: DML অপারেশনে Exception Handling নিশ্চিত করতে try-catch ব্লক ব্যবহার করুন।
  4. SOQL Query Optimization: SOQL কুয়েরিতে শুধু প্রয়োজনীয় ফিল্ড সিলেক্ট করুন এবং LIMIT ব্যবহার করুন।
  5. Test Coverage নিশ্চিত করুন: SOQL এবং DML এর জন্য আলাদা টেস্ট মেথড লিখুন এবং ৭৫% কোড কাভারেজ নিশ্চিত করুন।

SOQL এবং DML এর উদাহরণ: টেস্ট ক্লাস সহ

Apex Class: Custom Controller with SOQL and DML

public class AccountController {
    public List<Account> accountList { get; set; }
    public Account acc { get; set; }

    public AccountController() {
        accountList = [SELECT Id, Name, Industry FROM Account LIMIT 10];
        acc = new Account();
    }

    public void saveAccount() {
        insert acc;
    }
}

Visualforce Page

<apex:page controller="AccountController">
    <h1>Account List and Creation</h1>

    <apex:pageBlock title="Create New Account">
        <apex:form>
            <apex:inputField value="{!acc.Name}" label="Account Name"/>
            <apex:inputField value="{!acc.Industry}" label="Industry"/>
            <apex:commandButton value="Save Account" action="{!saveAccount}" rerender="confirmation"/>
            <apex:outputPanel id="confirmation">
                <apex:outputText value="Account saved!" rendered="{!NOT(ISNULL(acc.Id))}"/>
            </apex:outputPanel>
        </apex:form>
    </apex:pageBlock>

    <apex:pageBlock title="Account List">
        <apex:pageBlockTable value="{!accountList}" var="acc">
            <apex:column value="{!acc.Name}" headerValue="Account Name"/>
            <apex:column value="{!acc.Industry}" headerValue="Industry"/>
        </apex:pageBlockTable>
    </apex:pageBlock>
</apex:page>

Test Class: SOQL এবং DML সহ

@isTest
public class AccountControllerTest {
    @isTest
    static void testSOQLQuery() {
        Account acc1 = new Account(Name = 'Test Account 1', Industry = 'Technology');
        insert acc1;

        AccountController controller = new AccountController();
        System.assertNotEquals(0, controller.accountList.size(), 'Account list should not be empty');
    }

    @isTest
    static void testDMLInsert() {
        AccountController controller = new AccountController();
        controller.acc.Name = 'Test Account 2';
        controller.acc.Industry = 'Healthcare';
        
        Test.startTest();
        controller.saveAccount();
        Test.stopTest();

        Account insertedAcc = [SELECT Id, Name, Industry FROM Account WHERE Id = :controller.acc.Id];
        System.assertEquals('Test Account 2', insertedAcc.Name, 'Account name should match');
        System.assertEquals('Healthcare', insertedAcc.Industry, 'Industry should match');
    }
}
  • testSOQLQuery: SOQL ব্যবহার করে accountList এর জন্য টেস্ট ক্লাস তৈরি করা হয়েছে।
  • testDMLInsert: DML insert অপারেশন টেস্ট করার জন্য টেস্ট মেথড তৈরি করা হয়েছে, যা নতুন Account রেকর্ড তৈরি এবং ভ্যালিডেশন করে।

সারসংক্ষেপ

Visualforce পেজে SOQL এবং DML ব্যবহার করে ডেটাবেস থেকে ডেটা পুনরুদ্ধার ও পরিবর্তন করার মাধ্যমে Apex কোডের কার্যক্ষমতা এবং ডেটা প্রক্রিয়াকরণ সক্ষমতা বৃদ্ধি করা যায়। Custom Controller এবং Controller Extension ব্যবহার করে SOQL ও DML অপারেশন প্রয়োগ করতে হলে গভর্নর লিমিট মেনে চলা, টেস্ট ক্লাস ও টেস্ট ডেটা তৈরি করা এবং সঠিক Exception Handling নিশ্চিত করা গুরুত্বপূর্ণ।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion